﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SD.App.Desktop
{
    /// <summary>
    /// 生命周期标记接口基类（空接口，仅用于继承）
    /// </summary>
    public interface ILifetimeMarker
    {
    }

    /// <summary>
    /// 单例生命周期标记接口
    /// 实现该接口的服务，将被注册为 SingleInstance（全局唯一）
    /// 适用场景：无状态服务、工具类、配置服务（如 EncryptionHelper、IMessageService）
    /// </summary>
    public interface ISingletonLifetime : ILifetimeMarker
    {
    }

    /// <summary>
    /// 作用域生命周期标记接口
    /// 实现该接口的服务，将被注册为 InstancePerLifetimeScope（每个请求/作用域唯一）
    /// 适用场景：有状态服务、数据库相关服务（如 Repository、DbContext）
    /// </summary>
    public interface IScopedLifetime : ILifetimeMarker
    {
    }

    /// <summary>
    /// 瞬时生命周期标记接口
    /// 实现该接口的服务，将被注册为 InstancePerDependency（每次请求创建新实例）
    /// 适用场景：轻量级服务、频繁创建销毁的服务（如业务 Service、ViewModel）
    /// </summary>
    public interface ITransientLifetime : ILifetimeMarker
    {
    }
}
